# [cherry-pick] 다른 브랜치에 있는 커밋을 내 브랜치로 가져오고 싶어요.

# git cherry-pick {커밋 ID}

다음과 같이 main 브랜치로부터 my-branch 브랜치를 만들어 작업하고 있었다고 합시다.

$ git switch -c my-branch

새로 만든 'my-branch' 브랜치로 전환합니다

$ touch b
$ git add b
$ git commit -m "b 파일을 추가한다"

$ touch c
$ git add c
$ git commit -m "c 파일을 추가한다"

현재까지 작업 내역은 다음과 같습니다.

$ git log --oneline

7404163 (HEAD -> my-branch) c 파일을 추가한다
c315709 b 파일을 추가한다
b014111 (main) a 파일을 추가한다

이제 다시 main 브랜치로 가봅시다.

$ git switch main

'main' 브랜치로 전환합니다

# main 브랜치의 현재 작업 내역은 다음과 같습니다.
$ git log --oneline

b014111 (HEAD -> main) a 파일을 추가한다

이제 main 브랜치에 my-branch7404163 (c 파일을 추가한다) 커밋만 가져오고 싶습니다. 이때 사용하는 것이 git cherry-pick 명령어입니다. 이 명령어는 다른 브랜치의 일부 커밋을 현재 브랜치로 가져오게 합니다.

# 7404163 커밋을 현재 브랜치로 가져옵니다.
$ git cherry-pick 7404163

[main 51488a2] c 파일을 추가한다
 Date: Fri Aug 20 23:13:13 2021 +0900
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 c

이제 로그를 확인하면 다음처럼 7404163 커밋의 작업내역을 가져온 것을 확인할 수 있습니다. 이때 변경 사항을 복사해서 새로운 커밋을 만드는 것이기에 커밋 해시는 변경됩니다.

$ git log --oneline

51488a2 (HEAD -> main) c 파일을 추가한다
b014111 a 파일을 추가한다

$ ls

a c

Last Updated: 2/20/2022, 1:51:31 PM

CC-BY-NC-ND-4.0 Licensed | Copyright © 2021-present Grab